using System;
using System.Collections.Generic;
using System.Data;
using System.Configuration;
using System.Collections;
using System.IO;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class ACT_ACT_ACTIVO_IMAGEN : PaginaBaseFormView
{
    private FileUpload _fulOrigenImagen;
    private string _pathBorrar = string.Empty;
    private bool _guardarFichero = false;
    private string _idActActivoImagen = string.Empty;

    protected void Page_Load(object sender, EventArgs e)
    {
        base.Page_Load(sender, e);
        odsFvActActivoImagen.Updating += new ObjectDataSourceMethodEventHandler(odsFvActActivoImagen_Updating);
        fvActActivoImagen.ItemUpdated += new FormViewUpdatedEventHandler(fvActActivoImagen_ItemUpdated);
        fvActActivoImagen.DataBound += new EventHandler(fvActActivoImagen_DataBound);
        Btn_act_Activo_Imagen_Activo.Click += new EventHandler(Btn_act_Activo_Imagen_Activo_Click);
    }

    void Btn_act_Activo_Imagen_Activo_Click(object sender, EventArgs e)
    {
        string idActivo = ((TextBox)Fv.FindControl("Act_Activo_Id")).Text;
        string codigoActivo = ((TextBox)Fv.FindControl("Act_Activo_Codigo")).Text;
        string codigoNombre = ((TextBox)Fv.FindControl("Act_Activo_Nombre")).Text;

        Response.Redirect("~/ACT/ACT_ACTIVO.aspx" +
            "?Act_Activo_Id=" + idActivo +
            "&Act_Activo_Codigo=" + codigoActivo +
            "&Act_Activo_Nombre=" + codigoNombre);
    }

    void  fvActActivoImagen_DataBound(object sender, EventArgs e)
    {
        if (_guardarFichero && Fv.CurrentMode == FormViewMode.ReadOnly)
        {
            string strServerPath = ((TextBox)Fv.FindControl("Ruta_Imagen")).Text;
            string nombreFichero = _idActActivoImagen + _fulOrigenImagen.FileName;
            strServerPath = strServerPath.Replace(nombreFichero, "");
            DirectoryInfo serverPath = new DirectoryInfo(Server.MapPath(strServerPath));
            string path = serverPath.FullName + nombreFichero;
            _fulOrigenImagen.SaveAs(path);
        }
    }

    void  fvActActivoImagen_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
    {
 	    if (e.Exception == null || e.AffectedRows == 1)
        {
            BorrarArchivo(_pathBorrar);

            if (_fulOrigenImagen.HasFile)
            {
                _guardarFichero = true;
                _idActActivoImagen = e.NewValues["Id"].ToString();
            }
        }
    }

    

    void BorrarArchivo(string path)
    {
        if (string.IsNullOrEmpty(path)) return;
        
        try
        {
            File.Delete(Server.MapPath(path));
        }
        catch
        { }
    }

    void odsFvActActivoImagen_Updating(object sender, ObjectDataSourceMethodEventArgs e)
    {
        List<DictionaryEntry> parametros = (List<DictionaryEntry>)e.InputParameters["parametros"];
        _fulOrigenImagen = (FileUpload)Fv.FindControl("fulOrigenImagen");

        string origenImagen = null;
        string imagen = null;
        

        if (_fulOrigenImagen.HasFile)
        {
            origenImagen = _fulOrigenImagen.PostedFile.FileName;
            imagen = _fulOrigenImagen.FileName;
        }

        parametros[BuscarParametro(parametros, "Origen_Imagen")] =
                new DictionaryEntry("Origen_Imagen", origenImagen);

        parametros[BuscarParametro(parametros, "Imagen")] =
            new DictionaryEntry("Imagen", imagen);


        _pathBorrar = ((TextBox)Fv.FindControl("Ruta_Imagen")).Text;
    }

    private int BuscarParametro(List<DictionaryEntry> parametros, string key)
    {
        for (int i = 0; i < parametros.Count; i++)
        {
            if (parametros[i].Key.ToString() == key)
                return i;
        }
        return -1;
    }

    protected override Type TipoObjeto
    {
        get { return typeof(Act_Activo_Imagen); }
    }

    protected override FormView Fv
    {
        get { return fvActActivoImagen; }
    }

    protected override ObjectDataSource OdsDv
    {
        get { return odsFvActActivoImagen; }
    }

    protected override string Contenedor
    {
        get { return "ACT_ACTIVO_IMAGEN"; }
    }

    protected override void AsignarParametrosDataSourceDeatailsView(string id)
    {
        OdsDv.SelectParameters["Act_Activo_Id"].DefaultValue = id;
    }
}
